﻿using System.Collections.Generic;

namespace Sinacor.Servico.Bovespa.Contabil.Service.ServiceImplementation.Translator.DataContractToBusinessEntity
{
    /// <summary>
    /// Translator.DataContractToBusinessEntity Class - EventoContabil
    /// </summary>
    public class EventoContabil
    {
        #region Métodos de Tradução

        /// <summary>
        /// Traduz um objeto do tipo DataContract.Request.EventoContabilRequest para um objeto do tipo BusinessEntity.EventoContabil.
        /// </summary>
        /// <param name="request">DataContract.Request.EventoContabilRequest</param>
        /// <returns>BusinessEntity.EventoContabil</returns>
        public BusinessEntity.EventoContabil ToEventoContabil(DataContract.Request.EventoContabilRequest request)
        {
            BusinessEntity.EventoContabil response = new Contabil.BusinessEntity.EventoContabil();

            response.Codigo = request.Codigo;
            response.Descricao = request.Descricao;
            response.UtilizaMunicipio = request.UtilizaMunicipio;

            return response;
        }

        /// <summary>
        /// Traduz uma lista de objetos do tipo DataContract.Request.EventoContabilRequest para uma lista de objetos do tipo 
        /// BusinessEntity.EventoContabil.
        /// </summary>
        /// <param name="requestList">Lista de objetos do tipo DataContract.Request.EventoContabilRequest</param>
        /// <returns>Lista de objetos do tipo BusinessEntity.EventoContabil</returns>
        public List<BusinessEntity.EventoContabil> ToEventoContabil(List<DataContract.Request.EventoContabilRequest> requestList)
        {
            List<BusinessEntity.EventoContabil> responseList = new List<BusinessEntity.EventoContabil>();

            foreach (DataContract.Request.EventoContabilRequest request in requestList)
                responseList.Add(this.ToEventoContabil(request));

            return responseList;
        }

        /// <summary>
        /// Traduz um objeto do tipo DataContract.Request.FiltroEventoContabilRequest para um objeto do tipo BusinessEntity.Parameter.FiltroEventoContabil.
        /// </summary>
        /// <param name="request">DataContract.Request.FiltroEventoContabilRequest</param>
        /// <returns>BusinessEntity.Parameter.FiltroEventoContabil</returns>
        public BusinessEntity.Parameter.FiltroEventoContabil ToFiltroEventoContabil(DataContract.Request.FiltroEventoContabilRequest request)
        {
            BusinessEntity.Parameter.FiltroEventoContabil response = new BusinessEntity.Parameter.FiltroEventoContabil();

            response.Codigo = request.Codigo;
            response.Descricao = request.Descricao;
            response.UtilizaMunicipio = request.UtilizaMunicipio;

            return response;
        }

        /// <summary>
        /// Traduz uma lista de objetos do tipo DataContract.Request.FiltroEventoContabilRequest para uma lista de objetos do tipo 
        /// BusinessEntity.Parameter.FiltroEventoContabil.
        /// </summary>
        /// <param name="requestList">Lista de objetos do tipo DataContract.Request.FiltroEventoContabilRequest</param>
        /// <returns>Lista de objetos do tipo BusinessEntity.Parameter.FiltroEventoContabil</returns>
        public List<BusinessEntity.Parameter.FiltroEventoContabil> ToFiltroEventoContabil(List<DataContract.Request.FiltroEventoContabilRequest> requestList)
        {
            List<BusinessEntity.Parameter.FiltroEventoContabil> responseList = new List<BusinessEntity.Parameter.FiltroEventoContabil>();

            foreach (DataContract.Request.FiltroEventoContabilRequest request in requestList)
                responseList.Add(this.ToFiltroEventoContabil(request));

            return responseList;
        }

        /// <summary>
        /// Traduz um objeto do tipo DataContract.Request.FiltroEventoContabilChave para um objeto do tipo BusinessEntity.Parameter.FiltroEventoContabilChave.
        /// </summary>
        /// <param name="request">DataContract.Request.FiltroEventoContabilChave</param>
        /// <returns>BusinessEntity.Parameter.FiltroEventoContabilChave</returns>
        public BusinessEntity.Parameter.FiltroEventoContabilChave ToFiltroEventoContabilChave(DataContract.Request.FiltroEventoContabilChave request)
        {
            BusinessEntity.Parameter.FiltroEventoContabilChave response = new BusinessEntity.Parameter.FiltroEventoContabilChave();

            response.Codigo = request.Codigo;

            return response;
        }

        /// <summary>
        /// Traduz uma lista de objetos do tipo DataContract.Request.FiltroEventoContabilChave para uma lista de objetos do tipo 
        /// BusinessEntity.Parameter.FiltroEventoContabilChave.
        /// </summary>
        /// <param name="requestList">Lista de objetos do tipo DataContract.Request.FiltroEventoContabilChave</param>
        /// <returns>Lista de objetos do tipo BusinessEntity.Parameter.FiltroEventoContabilChave</returns>
        public List<BusinessEntity.Parameter.FiltroEventoContabilChave> ToFiltroEventoContabilChave(List<DataContract.Request.FiltroEventoContabilChave> requestList)
        {
            List<BusinessEntity.Parameter.FiltroEventoContabilChave> responseList = new List<BusinessEntity.Parameter.FiltroEventoContabilChave>();

            foreach(DataContract.Request.FiltroEventoContabilChave request in requestList)
                responseList.Add(this.ToFiltroEventoContabilChave(request));

            return responseList;
        }

        #endregion
    }
}